package com.example.chartmoudel;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.AxisBase;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.LimitLine;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.PieEntry;
import com.github.mikephil.charting.formatter.IAxisValueFormatter;
import com.github.mikephil.charting.formatter.PercentFormatter;
import com.github.mikephil.charting.highlight.Highlight;
import com.github.mikephil.charting.listener.OnChartValueSelectedListener;

import java.util.ArrayList;
import java.util.List;

import static com.example.chartmoudel.R.id.linechart;

public class MainActivity extends AppCompatActivity implements OnChartValueSelectedListener {

    private LineChart mLineChart;
    private PieChart mPieChart;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mLineChart= (LineChart) findViewById(linechart);
        mPieChart= (PieChart) findViewById(R.id.piechart);
        initChart();
        setDataLineChart();
        setDataPieChart();
    }

    private void setDataPieChart() {
        List<PieEntry> list=new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            list.add(new PieEntry(i+10*3,"这是方块"+(i+1)));
        }
        List<Integer> colors=new ArrayList<>();
        colors.add(Color.BLUE);
        colors.add(Color.CYAN);
        colors.add(Color.RED);
        PieDataSet dataset=new PieDataSet(list,"");
        //设置字体的大小，会被下面效果覆盖
        dataset.setValueTextSize(20);
        //设置不同的饼状图颜色
        dataset.setColors(colors);

        dataset.setSliceSpace(3f);//设置饼状Item之间的间隙
//        dataset.setSelectionShift(10f); //设置饼状Item被选中时变化的距离,效果是向外扩张

        PieData data=new PieData(dataset);
        data.setValueFormatter(new PercentFormatter());//将数据改为百分比的形式
        data.setValueTextSize(12f);//设置数据字体大小
        data.setValueTextColor(Color.WHITE);//设置数据值字体的颜色

        mPieChart.setData(data);
    }

    private void setDataLineChart() {
        List<String> names=new ArrayList<>();
        List<Entry> list=new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            names.add(((i+2)+":00"));
           list.add(new Entry(i,i+10*2));
        }
        LineDataSet dataSet=new LineDataSet(list,"");
        dataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);//设置平滑的曲线
//        dataSet.setCircleSize(5f);//设置圆的大小
        dataSet.setDrawCircleHole(false);//显示实心点的效果
        dataSet.setDrawValues(false);//不显示效果点旁边的字体效果
        LineData data=new LineData(dataSet);
        mLineChart.setData(data);

        final String[] quarters = new String[]{"2017年1月","2017年2月","2017年3月","2017年4月","2017年5月","2017年6月","2017年7月","2017年8月","2017年9月","2017年10月"};

        final List<String>listX=new ArrayList<>();
        listX.add("2017年1月");
        listX.add("2017年2月");
        listX.add("2017年3月");
        listX.add("2017年4月");
        listX.add("2017年5月");
        listX.add("2017年6月");
        listX.add("2017年7月");
        listX.add("2017年8月");
        listX.add("2017年8月");
        listX.add("2017年9月");
        listX.add("2017年10月");

        IAxisValueFormatter formatter = new IAxisValueFormatter() {

            @Override
            public String getFormattedValue(float value, AxisBase axis) {
//                return quarters[(int) value];
                return listX.get((int) value);
            }
        };
        XAxis xAxis = mLineChart.getXAxis();
        xAxis.setGranularity(1f);//X轴两个数字之间的距离
        xAxis.setValueFormatter(formatter);
    }

    private void initChart() {
        //折线图
       mLineChart.getAxisRight().setEnabled(false);//不设置右侧的Y轴
       mLineChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);//仅仅显示下面的X轴
        mLineChart.setNoDataText("暂时没有数据");//没有数据的时候显示的字体,不setData就可以显示
        mLineChart.setNoDataTextColor(Color.RED);//没事数据时显示的字体颜色
        mLineChart.getLegend().setEnabled(false); // 不显示图例
        //设置警戒线
        YAxis yAxis = mLineChart.getAxisLeft();
        LimitLine ll = new LimitLine(20, "警戒线");
        ll.setLineWidth(0.5f);
        ll.setLineColor(Color.RED);//线条的颜色
        ll.setTextColor(Color.RED);//线条旁边的字体
        ll.setTextSize(12);
        ll.setEnabled(true);
        yAxis.addLimitLine(ll);
        //设置坐标相隔多少，参数是int类型
        // xAxis.setLabelsToSkip(1);
        // 隐藏纵横网格线
        mLineChart.getXAxis().setDrawGridLines(false);
        mLineChart.getAxisLeft().setDrawGridLines(false);
        mLineChart.getAxisRight().setDrawGridLines(false);
        //隐藏高亮的线条
//        mLineChart.setHighlightPerTapEnabled(false);
        mLineChart.getDescription().setEnabled(false);//右下角的图标描述消失
//        mChart.invalidate();  //重新绘制图标以及数据
        mLineChart.setOnChartValueSelectedListener(this);


        //饼状图
        //饼状图中间可以添加文字
        mPieChart.setDrawCenterText(true);
        //设置显示成比例
        mPieChart.setUsePercentValues(true);
        // 不可以手动旋转
        mPieChart.setRotationEnabled(false);
        //设置比例图  总体设置
        Legend mLegend = mPieChart.getLegend();
        //左下边显示
        mLegend.setPosition(Legend.LegendPosition.BELOW_CHART_LEFT);
        //比例块字体大小
        mLegend.setFormSize(12f);
        //设置距离饼图的距离，防止与饼图重合
        mLegend.setXEntrySpace(2f);
        mLegend.setYEntrySpace(2f);
        //设置比例块换行，比例块太多需要换行显示，不然会超出屏幕
        mLegend.setWordWrapEnabled(true);
        //设置数据的百分比值,要配合alueFormatter使用
        mPieChart.setUsePercentValues(true);
        mPieChart.getLegend().setEnabled(false); // 不显示图例
        mPieChart.getDescription().setEnabled(false);//右下角的图标描述消失

//        mPieChart.setDrawEntryLabels(true);              //设置pieChart是否只显示饼图上百分比不显示文字（true：下面属性才有效果）
        mPieChart.setEntryLabelColor(Color.RED);       //设置pieChart图表文本字体颜色
        mPieChart.setEntryLabelTextSize(10f);            //设置pieChart图表文本字体大小

    }


    //点击事件
    @Override
    public void onValueSelected(Entry e, Highlight h) {
        Toast.makeText(this,"产能是上的值"+e.getY()+"时间是"+e.getX(),Toast.LENGTH_LONG).show();
    }

    @Override
    public void onNothingSelected() {

    }
}
